// system calls
int fork(void);
int exit(void) __attribute__((noreturn));
int wait(void);
int pipe(int *);
int write(int, void *, int);
int mywrite(int, void *, int, int);
int read(int, void *, int);
int myread(int, void *, int, int);
int close(int);
int kill(int);
int exec(char *, char **);
int open(char *, int);
int mknod(char *, short, short, short);
int unlink(char *);
int fstat(int fd, struct stat *);
int link(char *, char *);
int mkdir(char *);
int chdir(char *);
int dup(int);
int getpid();
char *sbrk(int);

// ulib.c
int stat(char *, struct stat *);
int puts(char *);
int puts2(int , int);
char *strcpy(char *, char *);
char *strchr(const char *, char c);
int strcmp(const char *, const char *);
void printf(int, char *, ...);
char *gets(char *, int max);
char *gets2(char *, int max, int should_print);
unsigned int strlen(char *);
void *memset(void *, int, unsigned int);
void *malloc(uint);
void free(void *);
int atoi(const char *);